1
พื้นฐานทางสถาปัตยกรรมของระบบนิเวศ HIP
AI022Lesson 3
00:00

ระบบ ระบบนิเวศ HIP ถูกออกแบบเป็นชั้นการดึงข้อมูลแบบบางเพื่อให้โค้ดแหล่งที่มาทำงานร่วมกันได้ระหว่างสถาปัตยกรรมของ AMD และ NVIDIA โดยใช้เทคโนโลยี ROCm (Radeon Open Compute) สแต็ก โดยเฉพาะการใช้งาน สถาปัตยกรรมระบบหลายประเภท (HSA) รันไทม์ และ ไดรเวอร์ฟิวชันเคอร์เนล (KFD).

1. การเริ่มต้นระบบเบื้องต้น

การเริ่มต้นเริ่มจากการแลกเปลี่ยนข้อมูลระหว่างไดรเวอร์เคอร์เนลระดับต่ำผ่าน hsa_init(0, ...) และ hsaKmtOpenKFD(...). การเรียกใช้เหล่านี้สร้างสะพานการสื่อสารระหว่างแอปพลิเคชันในพื้นที่ผู้ใช้กับฮาร์ดแวร์กราฟิกของ AMD

2. การตรวจจับโครงสร้างและการค้นพบคุณสมบัติ

ก่อนเริ่มทำงานเคอร์เนล รันไทม์จะตรวจสอบความสามารถของฮาร์ดแวร์โดยใช้ hsaKmtAcquireSystemProperties และ hsaKmtGetNodeProperties. มันเชื่อมโยงหน่วยความจำจริงกับโหนดกราฟิกโดยใช้ hsaKmtMapMemoryToGPUNodes, เพื่อให้มั่นใจว่าตารางหน้า (page table) มองเห็นได้สำหรับอุปกรณ์นั้น

3. กระบวนการแปลงโค้ด

สะพานเชื่อมระหว่าง CUDA และ HIP ถูกสร้างจากสองเสาหลัก: hipify-perl (เครื่องแปลที่ใช้รูปแบบการจับรูปแบบพิเศษ) และ hipcc (ตัวห่อคอมไพเลอร์)

# ตัวอย่างขั้นตอนการย้ายโค้ด
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out

4. ตรรกะการจัดการเวอร์ชัน

ความเข้ากันได้ถูกบังคับใช้ผ่านสูตรที่แม่นยำ เพื่อให้มั่นใจว่า hipRuntimeGetVersion สอดคล้องกับตารางขยายของ HSA:

$$\text{HIP\_VERSION} = \text{MAJOR} \times 10^7 + \text{MINOR} \times 10^5 + \text{PATCH}$$

ชั้นแอปพลิเคชัน (./square.out)ชั้น HIP (hipcc / API รันไทม์)รันไทม์ HSA / ตารางขยายไดรเวอร์เคอร์เนล (KFD) และฮาร์ดแวร์
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>